// src/api/admin.js
import request from '@'

/**
 * 管理员登录
 * @param {string} account 账号
 * @param {string} password 密码
 * @returns {Promise<Admin>} 返回登录成功的管理员信息
 */
import axios from 'axios'
export function login(account, password) {
    return axios({
        url: '/admin/login',
        method: 'POST',
        // Spring 接收 @RequestParam，所以这里用 params
        params: { account, password }
    })
}

/**
 * 获取所有管理员列表
 * @returns {Promise<Admin[]>}
 */
export function listAdmins(name = '', page = 1, size = 10, role = '') {
    const params = { page, size }
    if (name) {
        params.name = name.trim()
    }
    if (role) {
        params.role = role
    }
    return axios.get('/admin/list', { params })
}

/**
 * 获取所有管理员角色是健康管家的列表
 * @returns {Promise<Admin[]>}
 */
export function listCareAdmins(name = '', page = 1, size = 10) {
    const params = { page, size }
    if (name) {
        params.name = name.trim()
    }
    return axios.get('/admin/listCareAd', { params })
}

/**
 * 根据 ID 获取单个管理员
 * @param {number|string} id 管理员 ID
 * @returns {Promise<Admin>}
 */
export function getAdmin(id) {
    return axios({
        url: `/admin/${id}`,
        method: 'GET'
    })
}
// 重置密码
export function resetAdminPassword(id) {
    return axios.post(`/admin/${id}/reset-password`);
}

export function getCurrentUser() {
    return axios.get('/admin/me')
}
/**
 * 创建一个新管理员
 * @param {Object} admin 管理员对象，字段示例：{ adAccount, adPassword, adName, phone, role }
 * @returns {Promise<void>}
 */
export function createAdmin(admin) {
    return axios({
        url: '/admin/create',
        method: 'POST',
        data: admin
    })
}

/**
 * 更新已有管理员
 * @param {Object} admin 管理员对象，必须带 adId，例如：{ adId, adAccount, adPassword, ... }
 * @returns {Promise<void>}
 */
export function updateAdmin(admin) {
    return axios({
        url: '/admin/update',
        method: 'PUT',
        data: admin
    })
}

/**
 * 删除管理员
 * @param {number|string} id 管理员 ID
 * @returns {Promise<void>}
 */
export function deleteAdmin(id) {
    return axios({
        url: '/admin/delete',
        method: 'DELETE',
        // Spring 接收无注解的参数，所以这里也用 params
        params: { id }
    })
}

/**
 * 根据管理员 ID 查询其所护理的客户列表
 * @param {number|string} id 管理员 ID
 * @returns {Promise<Client[]>}
 */
export function listClientsByAdmin(adminId, page = 1, size = 10) {
    return axios
        .get(`/admin/clients/${adminId}`, { params: { page, size } })
}
//移除某管家的客户
export function unassignClient(clientId) {
    return axios.post(`/admin/unassign/${clientId}`)
}